---
title: "Estat del Sanejament de les aigües residuals | WHO-UNICEF"
author: "Carles Cayuela Linares"
output:
flexdashboard::flex_dashboard:
orientation: columns
vertical_layout: fill
theme:
version: 4
bg: "#3e3e3e"
fg: "#FDF7F7"
primary: "#101010"
navbar-bg: "#000000"
source_code: embed
---
```{r setup, include=FALSE}
library(flexdashboard)
library(openxlsx)
library(crosstalk)
library(ggplot2)
library(dplyr)
library(plotly)
library(rgdal)
library(sf)
library(leaflet)
library(sp)
library(stringr)
library(DT)
library(tidyverse)
library(data.table)
# DADES:
dades <- read.xlsx("dades.xlsx", sheet = "Sanitation", startRow = 3)
dades_subset_sanejament <- dades %>%
filter(Year == "2020") %>%
select(COUNTRY, ISO3, Year, `%.urban`, `Population.(thousands)`, `At.least.basic._NATIONAL`, `Limited.(shared)_NATIONAL`, `Unimproved_NATIONAL`, `Open.defecation_NATIONAL`, `Annual.rate.of.change.in.basic_NATIONAL`, `Annual.rate.of.change.in.open.defecation_NATIONAL`,
`Safely.managed_NATIONAL`, `Disposed.in.situ_NATIONAL`, `Emptied.and.treated_NATIONAL`, `Wastewater.treated_NATIONAL`, `Latrines.and.other_NATIONAL`, `Septic.tanks_NATIONAL`, `Sewer.connections_NATIONAL`) %>%
mutate_all(funs(str_replace(., ">99", "99.9"))) %>%
mutate_all(funs(str_replace(., "<1", "0.01"))) %>%
mutate(across(`%.urban`:`Sewer.connections_NATIONAL`, as.numeric)) %>%
mutate(across(`%.urban`:`Sewer.connections_NATIONAL`, round, 2)) %>%
mutate(`Safely.managed_NATIONAL` = replace_na(`Safely.managed_NATIONAL`, 0)) %>%
setNames(., c("Pais", "iso3", "Any", "Percent_urba", "Poblacio_milers", "Sanejament_basic", "Sanejament_limitat", "SanejamentNoMillorat", "Sense_Sanejament", "Rati_canvi_sanejament_basic", "Rati_canvi_Sense_Sanejament",
"Gestionada_correctament", "Abocada sense tractat", "Abocada i Tractada", "Tractada", "Latrines", "Fosses Sèptiques", "Recollida en col·lectors"))
dades_subset_sanejament_2 <- dades %>%
select(COUNTRY, ISO3, Year, `%.urban`, `Population.(thousands)`, `At.least.basic._NATIONAL`, `Limited.(shared)_NATIONAL`, `Unimproved_NATIONAL`, `Open.defecation_NATIONAL`, `Annual.rate.of.change.in.basic_NATIONAL`, `Annual.rate.of.change.in.open.defecation_NATIONAL`) %>%
mutate_all(funs(str_replace(., ">99", "99.9"))) %>%
mutate_all(funs(str_replace(., "<1", "0.01"))) %>%
mutate(across(`%.urban`:`Annual.rate.of.change.in.open.defecation_NATIONAL`, as.numeric)) %>%
mutate(across(`%.urban`:`Annual.rate.of.change.in.open.defecation_NATIONAL`, round, 2)) %>%
mutate(Year = as.numeric(Year)) %>%
# mutate(across(`%.urban`:`Annual.rate.of.change.in.open.defecation_NATIONAL`, replace_na, 0)) %>%
setNames(., c("Pais", "iso3", "Any", "Percent_urba", "Poblacio_milers", "Sanejament_basic", "Sanejament_limitat", "SanejamentNoMillorat", "Sense_Sanejament", "Rati_canvi_sanejament_basic", "Rati_canvi_Sense_Sanejament"))
# MAPA:
world_polygons <- read_sf("world-administrative-boundaries/world-administrative-boundaries.shp")
world_polygons <- st_simplify(world_polygons)
dades_map <- merge(world_polygons, dades_subset_sanejament, by = "iso3")
# SHARED DATA:
sd <- SharedData$new(dades_map)
# PALETTA DEL MAPA:
pal <- colorNumeric(palette = "RdYlGn", domain = seq(0,100,1) )
# SUNBURST
DF_sunburst <- data.table(continent=dades_map$continent, pais=dades_map$Pais, valor=dades_map$Gestionada_correctament)
as.sunburstDF <- function(DF, value_column = NULL, add_root = FALSE){
require(data.table)
colNamesDF <- names(DF)
if(is.data.table(DF)){
DT <- copy(DF)
} else {
DT <- data.table(DF, stringsAsFactors = FALSE)
}
if(add_root){
DT[, root := ""]
}
colNamesDT <- names(DT)
hierarchy_columns <- setdiff(colNamesDT, value_column)
DT[, (hierarchy_columns) := lapply(.SD, as.factor), .SDcols = hierarchy_columns]
if(is.null(value_column) && add_root){
setcolorder(DT, c("root", colNamesDF))
} else if(!is.null(value_column) && !add_root) {
setnames(DT, value_column, "values", skip_absent=TRUE)
setcolorder(DT, c(setdiff(colNamesDF, value_column), "values"))
} else if(!is.null(value_column) && add_root) {
setnames(DT, value_column, "values", skip_absent=TRUE)
setcolorder(DT, c("root", setdiff(colNamesDF, value_column), "values"))
}
hierarchyList <- list()
for(i in seq_along(hierarchy_columns)){
current_columns <- colNamesDT[1:i]
if(is.null(value_column)){
currentDT <- unique(DT[, ..current_columns][, values := .N, by = current_columns], by = current_columns)
} else {
currentDT <- DT[, lapply(.SD, mean, na.rm = TRUE), by=current_columns, .SDcols = "values"]
}
setnames(currentDT, length(current_columns), "labels")
hierarchyList[[i]] <- currentDT
}
hierarchyDT <- rbindlist(hierarchyList, use.names = TRUE, fill = TRUE)
parent_columns <- setdiff(names(hierarchyDT), c("labels", "values", value_column))
hierarchyDT[, parents := apply(.SD, 1, function(x){fifelse(all(is.na(x)), yes = NA_character_, no = paste(x[!is.na(x)], sep = ":", collapse = " - "))}), .SDcols = parent_columns]
hierarchyDT[, ids := apply(.SD, 1, function(x){paste(x[!is.na(x)], collapse = " - ")}), .SDcols = c("parents", "labels")]
hierarchyDT[, c(parent_columns) := NULL]
return(hierarchyDT)
}
```
Sanejament
=======================================================================
Inputs {.sidebar}
-----------------------------------------------------------------------
Segons dades de l'Organització Mundial de la Slaut, **el sanejament de les aigües residuals** deficient és la causa principal d'unes 432.000 morts anuals i és un factor important en diverses malalties, com ara cucs intestinals, esquistosomiasi i tracoma. Un sanejament deficient també contribueix a la desnutrició.
El **2020**, el 78% de la població mundial (6.100 milions de persones) va utilitzar almenys un servei de sanejament bàsic; el 22% restant no va tenir accés al sanejament bàsic.
**A continuació es pot consultar per país l'estat del sanejament de les aigües residuals:**
```{r filters}
#FILTRE:
filter_select(
id = "id_Pais",
label = "Llistat de Països",
sharedData = sd,
group = ~Pais,
multiple = T
)
```
Column {data-width=600}
-------------------------------------
### Percentatge de població amb accés a Sanejament bàsic
```{r}
leaflet(sd) %>%
setView(lng = 0, lat = 10, zoom = 2) %>%
addProviderTiles(providers$CartoDB.DarkMatter) %>%
addPolygons(fillColor = ~pal(Sanejament_basic), fillOpacity = 0.75, color="grey", weight = 1,
popup = ~paste(
"<a style='color:#000000'> País: </a>", "<b style='color:#000000'>", Pais, "</b><br>",
"<a style='color:#000000'> Població sanejada: </a>", "<b style='color:#000000'>", Sanejament_basic, "%", "</b><br>"))
```
Column {data-width=400}
-------------------------------------
### % de població assistida per sistemes de tractament gestionats amb seguretat
```{r}
sunburstDF <- as.sunburstDF(DF_sunburst, value_column = "valor", add_root = TRUE)
plot_ly(data = sunburstDF, ids = ~ids, labels= ~labels, parents = ~parents, values= ~values, type='sunburst', branchvalues = 'relative') %>%
layout(
plot_bgcolor = "rgba(0,0,0,0)",
paper_bgcolor = "rgba(0,0,0,0)")
```
### Chart B